<?php

namespace Sisesporte\Service;

use Doctrine\ORM\EntityManager;
use Sisesporte\Entity\Modalidade;
use Sisesporte\Entity\LocalModalidade;

class ModalidadeService extends AbstractService {

    public function __construct(EntityManager $em) {
        parent::__construct($em);
        $this->entity = "Sisesporte\Entity\Modalidade";
    }

    public function insert(array $data) {
        
        $entityModalidade = new Modalidade();
        $entityModalidade->setNoModalidade($data['noModalidade'])
                ->setSgModalidade($data['sgModalidade'])
                ->setInNecessitaTeste($data['inNecessitaTeste'])
                ->setTxPreRequisito($data['txPreRequisito'])
                ->setStAtivo(TRUE);
        $this->em->persist($entityModalidade);
        $this->em->flush();

        $entityLocalModalidade = new LocalModalidade();
        $noLocalidade = $this->em->getReference('Sisesporte\Entity\Localidade', $data['noLocalidade']);
        
        $entityLocalModalidade->setSqModalidade($entityModalidade)
                ->setSqLocalidade($noLocalidade)
                ->setStAtivo(TRUE);
        $this->em->persist($entityLocalModalidade);
        $this->em->flush();
    }

    
    public function update($id, array $data) {
        
        $entityModalidade = $this->em->getRepository("Sisesporte\Entity\Modalidade")->find($id);
        $entityModalidade->setNoModalidade($data['noModalidade'])
                ->setSgModalidade($data['sgModalidade'])
                ->setInNecessitaTeste($data['inNecessitaTeste'])
                ->setTxPreRequisito($data['txPreRequisito'])
                ->setStAtivo(TRUE);
        $this->em->persist($entityModalidade);
        $this->em->flush();

        $entityLocalModalidade = $this->em->getRepository("Sisesporte\Entity\LocalModalidade")->findby(array('sqModalidade' => $id), NULL);
        
        $noLocalidade = $this->em->getReference('Sisesporte\Entity\Localidade', $data['noLocalidade']);
        
        $entityLocalModalidade[0]->setSqLocalidade($noLocalidade);
        
        $this->em->persist($entityLocalModalidade[0]);
        $this->em->flush();
    }
    
    public function delete($id) {
        $entity = $this->em->getRepository("Sisesporte\Entity\LocalModalidade", $id)->findby(array('sqModalidade' => $id), NULL);
        if($entity[0]) {
            $this->em->remove($entity[0]);
            $this->em->flush();
        }
        
        $entity = $this->em->getReference($this->entity, $id);
        if($entity) {
            $this->em->remove($entity);
            $this->em->flush();
            return $id;
        }
    }
}
